package demo01.List;

import java.util.LinkedList;

/*
    java.util.LinkedList集合 implements List接口
    LinkedList集合的特点:
        1.底层是一个链表结构:查询慢,增删快
        2.里边包含了大量操作首尾元素的方法
        注意:使用LinkedList集合特有的方法,不能使用多态

        - public void addFirst(E e):将指定元素插入此列表的开头。
        - public void addLast(E e):将指定元素添加到此列表的结尾。
        - public void push(E e):将元素推入此列表所表示的堆栈。

        - public E getFirst():返回此列表的第一个元素。
        - public E getLast():返回此列表的最后一个元素。

        - public E removeFirst():移除并返回此列表的第一个元素。
        - public E removeLast():移除并返回此列表的最后一个元素。
        - public E pop():从此列表所表示的堆栈处弹出一个元素。

        - public boolean isEmpty()：如果列表不包含元素，则返回true。

 */
public class Demo02List {
    public static void main(String[] args) {
        show01();

    }

    private static void show01() {
        LinkedList<String>linkedList=new LinkedList<>();
        linkedList.add("a");//可以使用List父类的方法
        linkedList.add("b");
        linkedList.add("c");
        linkedList.add("d");
        System.out.println(linkedList);
        linkedList.set(3,"e");//可以使用List父类的方法
        System.out.println(linkedList);//[a, b, c, e]
        System.out.println("======================");
        /* - public void addFirst(E e):将指定元素插入此列表的开头。
        - public void addLast(E e):将指定元素添加到此列表的结尾。
        - public void push(E e):将元素推入此列表所表示的堆栈。*/
        linkedList.addFirst("First");
        linkedList.addLast("Last");
        System.out.println(linkedList);//[First, a, b, c, e, Last]
        System.out.println("======================");
        /*- public E getFirst():返回此列表的第一个元素。
        - public E getLast():返回此列表的最后一个元素。*/
        System.out.println(linkedList.getFirst());
        System.out.println(linkedList.getLast());
        System.out.println("======================");


        /*- public E removeFirst():移除并返回此列表的第一个元素。
        - public E removeLast():移除并返回此列表的最后一个元素。
        - public E pop():从此列表所表示的堆栈处弹出一个元素。*/
        System.out.println(linkedList.removeFirst());
        System.out.println(linkedList.removeLast());
        System.out.println(linkedList);
        System.out.println("======================");
        System.out.println(linkedList.isEmpty());
        System.out.println(linkedList.removeAll(linkedList));
        System.out.println(linkedList);
        System.out.println(linkedList.isEmpty());
    }
}
